package com.wwj.springcloud.feign;

import com.wwj.springcloud.entity.Dept;
import com.wwj.springcloud.hystrix.DeptClientServiceHystrix;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;

import java.util.List;

// 8001，8002，8003共用的模块
// 方法名对应项目名为springcloud-provider-dept（8001，8002，8003）的controller方法名
// （包名、类名、方法名没关系，重要的是requestMapping的路径要一致）
// 理论上是可以把这个接口写道8001，8002，8003中，然后feign-80的@EnableFeignClients把8001，8002，8003扫描进去
//@FeignClient(value = "springcloud-provider-dept") // 指定注册中心服务--->单Feign
@FeignClient(value = "springcloud-provider-dept", fallbackFactory = DeptClientServiceHystrix.class) // 指定注册中心服务+Hystrix服务降级
public interface DeptClientServiceFeign {

    @PostMapping("/dept/add")
//    @RequestMapping("/dept/add")
    boolean addDeptFeign(Dept dept);

    @GetMapping("/dept/get/{id}")
//    @RequestMapping("/dept/get/{id}")
    Dept queryByIdFeign(@PathVariable("id") Long id);

    @GetMapping("/dept/getAllDept")
//    @RequestMapping("/dept/getAllDept")
    List<Dept> queryAllFeign();

}
